#pragma warning disable 108
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using Cephei;
using Cephei.Core;
using Cephei.Core.Generic;
using Microsoft.FSharp.Core;
using Cephei.QL.Math;
using Cephei.QL;
namespace Cephei.QL.Experimental.Shortrate
{
    /// <summary> 
	/// ! This class describes the Ornstein-Uhlenbeck process governed by \f[ dx = a (level - x_t) dt + \sigma dW_t \f]  \ingroup processes  where the coefficients a and sigma are piecewise linear.
	/// </summary>
    [Guid ("8B455075-4FA7-4817-A33A-10E2FE5F9619"),ComVisible(true)]
	public interface IGeneralizedOrnsteinUhlenbeckProcess : Cephei.QL.IStochasticProcess1D
	{
		///////////////////////////////////////////////////////////////
        // Methods
        //
        /// <summary> 
		/// 
		/// </summary>
		 Double Diffusion(Double t, Double x);
        /// <summary> 
		/// 
		/// </summary>
		 Double Drift(Double t, Double x);
        /// <summary> 
		/// 
		/// </summary>
		 Double Expectation(Double t0, Double x0, Double dt);
        /// <summary> 
		/// 
		/// </summary>
		 Double Level {get;}
        /// <summary> 
		/// 
		/// </summary>
		 Double Speed(Double t);
        /// <summary> 
		/// 
		/// </summary>
		 Double StdDeviation(Double t0, Double x0, Double dt);
        /// <summary> 
		/// 
		/// </summary>
		 Double Variance(Double t0, Double x0, Double dt);
        /// <summary> 
		/// 
		/// </summary>
		 Double Volatility(Double t);
        /// <summary> 
		/// 
		/// </summary>
		 Double X0 {get;}
    }   

    /// <summary> 
	/// ! This class describes the Ornstein-Uhlenbeck process governed by \f[ dx = a (level - x_t) dt + \sigma dW_t \f]  \ingroup processes  where the coefficients a and sigma are piecewise linear. Factory
	/// </summary>
   	[ComVisible(true)]
    public interface IGeneralizedOrnsteinUhlenbeckProcess_Factory 
    {
        ///////////////////////////////////////////////////////////////
        // Factory methods
        //
    }
}

